<?php
/**
 * Тестирование класса Mutex
 * 
 * PHP version 5
 * 
 * @category Framework
 * @package  Core
 * @author   Andrey Filippov <afi@i-loto.ru>
 * @license  %license% name
 * @version  SVN: $Id: MutexTest.php 9 2007-12-25 11:26:03Z afi $
 * @link     nolink
 */

require_once 'Mutex/latest/Mutex/Mutex.php';
require_once 'PHPUnit/Framework/TestCase.php';

class MutexTest extends PHPUnit_Framework_TestCase
{
	private $mutex = null;
	
	public function setUp()
	{
		
	}
	
	public function tearDown()
	{
		
	}
	
	/**
	 * 
	 * @expectedException Exception
	 * 
	 */
	public function test_setDirectory()
	{
		$m = new Mutex("test_mutex", "undefined/path");		
	}
	
	public function test_lock()
	{
		$m = new Mutex("test_mutex");		
		$this->assertFalse($m->isAcquired());
		
		// блокируем ресурс
		$m->lock();
		$this->assertTrue($m->isAcquired());		
			
		// файл должен быть создан по пути:
		$expectedFile = sys_get_temp_dir() . "/test_mutex.lock";
		$this->assertTrue(file_exists($expectedFile));
		
		// Освобождаем ресурс
		$m->release();
		$this->assertFalse($m->isAcquired());
		
		// lock-файл должен быть удален
		$expectedFile = sys_get_temp_dir() . "/test_mutex.lock";
		$this->assertFalse(file_exists($expectedFile));
	}
}
?>